package lp2.projeto;
// Bernard lenin costa da silva


import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

/**
 * Classe Playlista
 * @author bernard
 *
 */
public class Playlista  implements Serializable{
	private String nomePlayLista;
	private int quantidadeMusica;
	
	private List<Musica> playLista;
	
	/**
	 * Construtor da classe Playlista
	 * @param nomePlaylista
	 * @throws Exception
	 */
	public Playlista(String nomePlaylista)throws Exception{
		if(nomePlaylista.equals("")){
			throw new Exception("Parametro invalido");
		}
		if(nomePlaylista.equals(null)){
			throw new Exception("Parametro invalido");
		}
		this.nomePlayLista = nomePlaylista;
		playLista = new ArrayList<Musica>();
		
	}
	/**
	 * Metodo addMusica
	 * responsavel por adiciona um objeto do tipo Musica na playlista
	 * @param musica
	 */
	
	public void  addMusica(Musica musica){
		playLista.add(musica);
		
	}
	/**
	 * Metodo removerMusica
	 * metodo responsavel por remover musicas na playlista
	 * @param nomeMusica
	 * @param artista
	 * @throws Exception
	 */
	public void removerMusica(String nomeMusica,String artista)throws Exception{
		for(Musica musica: playLista){
			if ( musica.getTitulo().equals(nomeMusica) && musica.getNomeArtista().equals(artista)){
				playLista.remove(musica);
			}
			else{
				throw new Exception("Musica nao encontrada impossivel a remocao.");
			}
		}
	}
	
	/**
	 * Metodo nomeDaPlaylista
	 * reponsavel por  retronar o nome da playlista
	 * @return nomePlaylista
	 */
	public String nomeDaPlaylista() {
		return nomePlayLista;
		
	}
	/**
	 * Metodo tocarPlayLista
	 * reposnavel por inicializar toda a playlista
	 * @param playLista
	 */
	public void tocarPlayLista(String playLista){
		System.out.println("Playlista reproduzida");
	}
	
	/**
	 * Metodo pesquisarMusicaGenero
	 * resposanvel por lista as musicas de mesmo genero
	 * @param genero
	 * @throws Exception
	 */
	public void pesquisarMusicaGenero(String genero)throws Exception{
		if (genero.equals("")){
			throw new Exception("Parametro invalido");
		}
		if (genero.equals(null)){
			throw new Exception("Parametro invalido");
		}	
		
		for(Musica musica:playLista){
			if ( musica.getGenero().equals(genero) ){
				System.out.println(musica.getTitulo());
			}
			else{
				throw new Exception("Genero de musica nao encontrado.");
				}
		}
		
	}
	
	/**
	 * Metodo pesquisarMusicaArtista
	 * responsavel por lista as musicas de um mesmo artista
	 * @param artista
	 * @throws Exception
	 */
	public void pesquisarMusicaArtista(String artista)throws Exception{
		if (artista.equals("")){
			throw new Exception("Parametro invalido");
		}
		if (artista.equals(null)){
			throw new Exception("Parametro invalido");
		}	
		
		for(Musica musica:playLista){
			if ( musica.getNomeArtista().equals(artista) ){
				System.out.println(musica.getTitulo());
			}
			else{
				throw new Exception("Artista nao encontrado.");
			}
		}
	}
}
